package com.hsjk.szwj.module.smedia.dal.dataobject.production;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;

/**
 * 将一个或多个视频、音频、图片、字幕素材合成为成品 Request DTO
 */
@Data
public class SubmitMediaProducingJobReqDTO {
    /**
     * 剪辑工程ld。注：ProjectId、Timeline、TemplateId有且只有一个非空。
     */
    @JsonProperty("ProjectId")
    private String projectId;

    /**
     * 时间线，描述素材按照视频创意进行编排和特效设计的结果。Json格式。具体结构定义参见Timeline配置说明。注：ProjectId、Timeline、TemplateId有且只有一个非空。
     */
    @JsonProperty("Timeline")
    private String timeline;

    /**
     * 模板Id，用于快速低门槛的构建时间线。注：ProjectId、Timeline、TemplateId有且只有一个非空。当TemplateId不为空时，ClipsParam不能为空。
     */
    @JsonProperty("TemplateId")
    private String templateId;

    /**
     * 模板对应的素材参数，Json格式，当TemplateId不为空时，ClipsParam不能为空。具体格式见 普通模板创建及使用、高级模板创建及使用。
     */
    @JsonProperty("ClipsParam")
    private String clipsParam;

    /**
     * 剪辑工程的元数据信息，Json格式
     */
    @JsonProperty("ProjectMetadata")
    private String projectMetadata;

    /**
     * 输出成品的目标类型。取值：
     *
     * oss-object（客户在阿里云oss bucket下的oss object）
     *
     * vod-media（阿里云vod的媒资）
     */
    @JsonProperty("OutputMediaTarget")
    private String outputMediaTarget;

    /**
     * 输出成品的目标配置，Json格式。可以设置输出成品的在OSS 上的URL，或者VOD Bucket 中的存储位置。
     *
     * 输出到OSS时，输出目标的 MediaURL 必填；输出到VOD 时，StorageLocation 和 FileName 两个参数必填。
     */
    @JsonProperty("OutputMediaConfig")
    @NotBlank(message = "输出成品的目标配置不能为空")
    private String outputMediaConfig;

    /**
     * 自定义设置，Json格式，长度限制为512字节。支持自定义回调地址配置。
     */
    @JsonProperty("UserData")
    private String userData;

    /**
     * 保证请求幂等性
     */
    @JsonProperty("ClientToken")
    private String clientToken;

    /**
     * 剪辑合成请求来源，取值范围：
     *
     * OpenAPI：API 直接请求。
     *
     * AliyunConsole：请求来自于阿里云控制台。
     *
     * WebSDK：请求来自于集成了WebSDK的前端页面。
     */
    @JsonProperty("Source")
    private String source;

    /**
     * 剪辑合成参数， 参数详情。
     *
     * AutoRegisterInputVodMedia：是否需要将您时间线中的VOD媒资自动注册至IMS，默认为true。
     *
     * OutputWebmTransparentChannel: 是否需要输出视频带透明通道，默认为false。
     *
     * CoverConfig: 自定义封面图参数。
     *
     * 等……
     */
    @JsonProperty("EditingProduceConfig")
    private String editingProduceConfig;

    /**
     * 合成视频的元数据，JSON格式。具体结构定义
     */
    @JsonProperty("MediaMetadata")
    private String mediaMetadata;
}
